/**
 * 代理模式
 * 
 * proxy
 * 
 * ctx.method = ctx.request.method
 * 
 * obj={
 *      a:{
 * b 
 *      }
 * }
 * 
 * obj.__defineGetter__('b',function(){
 *  return obj['a']['b']
 * })
 * 
 * obj.b
 */

 //ctx实现代理的  去request  去ctx上取值  会被转移到ctx.request
let ctx = {
    
}
//代理get
function defineGetter(property,key){
    ctx.__defineGetter__(key,function(){
        // this指向 的是  拷贝后的 用户的ctx   并不是这个ctx
        return this[property][key]
    })
}
//代理set
function defineSetter(property,key){
    ctx.__defineSetter__(key,function(newVal){
        // this指向 的是  拷贝后的 用户的ctx   并不是这个ctx
         this[property][key] = newVal
    })
}
defineGetter('request','method')
defineGetter('request','path')
defineGetter('response','body')
defineGetter('response','set')
defineGetter('response','statusCode')

defineSetter('response','body')




module.exports = ctx